#BeautifulSoup 地位等同于 正则表达式
from bs4 import BeautifulSoup as bs
import urllib.request

data = urllib.request.urlopen('http://www.baidu.com/').read().decode('utf-8','ignore')
#print(data)
#对象实例化
"""
将soup = BeautifulSoup(html)改成soup = BeautifulSoup(html,”lxml”)后就不会再出现警告
"""
bs1 = bs(data,'lxml')
#格式化输出(各种标签进行了正确的缩进)
print(bs1.prettify())
#获取整个标签（包括完整标签和内容）：bs对象.标签名
print(bs1.title)
#获取标签里面的文字：bs对象.标签名.string
print(bs1.title.string)
#获取标签（的）名（字）：bs对象.标签名.name
print(bs1.title.name)

#获取属性列表（默认魏第一个对应标签的所有属性列表）：bs对象.标签名.attrs
print(bs1.a.attrs)
#获取某个属性对应的值；bs对象.标签名[属性名] // bs对象.标签名.get(属性名)
print(bs1.a["id"])
print(bs1.a.get("id"))
#提取某特定节点所有的内容：bs对象.find_all('标签名') bs对象.find_all(['标签名1','标签名2，…,标签n'])
print(bs1.find_all('a'))
#会按照源文件的顺序，输出a和ul标签，不会分开输出a和ul标签
print(bs1.find_all(['a','ul']))
#提取所有子节点:bs对象.标签.contents——列表 // bs对象.标签.children——生成器
k1=bs1.ul.contents
print(k1)
k2=bs1.ul.children
allulc=[i for i in k2]
print(allulc)
#更多信息可以阅读官方文档：http://beautifulsoup.readthedocs.io/zh_CN/latest/
